package com.ht.pms.core.util;

import java.io.*;
import java.util.Calendar;
import java.util.Date;

import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.write.Boolean;
import jxl.write.DateFormats;
import jxl.write.DateTime;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

public class MutiStyleExcelWrite {
    public void createExcel(OutputStream os) throws WriteException,IOException {
        //创建工作薄
        WritableWorkbook workbook = Workbook.createWorkbook(os);
        //创建新的一页
        WritableSheet sheet = workbook.createSheet("First Sheet", 0);
        //构造表头
        sheet.mergeCells(0, 0, 11, 0);//添加合并单元格，第一个参数是起始列，第二个参数是起始行，第三个参数是终止列，第四个参数是终止行
        WritableFont bold = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//设置字体种类和黑体显示,字体为Arial,字号大小为10,采用黑体显示
        WritableCellFormat titleFormate = new WritableCellFormat(bold);//生成一个单元格样式控制对象
        titleFormate.setAlignment(jxl.format.Alignment.CENTRE);//单元格中的内容水平方向居中
        titleFormate.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//单元格的内容垂直方向居中
        Label title = new Label(0,0,"广东汉升软件科技有限公司佛山分公司",titleFormate);
        sheet.setRowView(0, 540, false);//设置第一行的高度
        sheet.addCell(title);



        //第二行
        sheet.mergeCells(0, 1, 11, 1);//添加合并单元格，第一个参数是起始列，第二个参数是起始行，第三个参数是终止列，第四个参数是终止行
        WritableFont secondBold = new WritableFont(WritableFont.ARIAL,16,WritableFont.NO_BOLD,false,UnderlineStyle.SINGLE);//设置字体种类和黑体显示,字体为Arial,字号大小为10,采用黑体显示
        WritableCellFormat secondFormate = new WritableCellFormat(secondBold);//生成一个单元格样式控制对象
        secondFormate.setAlignment(Alignment.LEFT);//单元格中的内容水平方向居中
        secondFormate.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//单元格的内容垂直方向居中
        Label second = new Label(0,1,"费用报销单",secondFormate);
        sheet.setRowView(1, 540, false);//设置第一行的高度
        sheet.addCell(second);

        //第三行
//        sheet.mergeCells(0, 1, 11, 1);//添加合并单元格，第一个参数是起始列，第二个参数是起始行，第三个参数是终止列，第四个参数是终止行
        WritableFont thirdBold = new WritableFont(WritableFont.createFont("宋体"),12,WritableFont.NO_BOLD,false);//设置字体种类和黑体显示,字体为Arial,字号大小为10,采用黑体显示
        WritableCellFormat thirdFormate = new WritableCellFormat(thirdBold);//生成一个单元格样式控制对象
        thirdFormate.setAlignment(Alignment.LEFT);//单元格中的内容水平方向居中
        thirdFormate.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//单元格的内容垂直方向居中
        Label approveDepartment = new Label(0,2,"报销部门：",thirdFormate);
        sheet.setRowView(2, 540, false);
        sheet.addCell(approveDepartment);

        Label approveDate = new Label(6,2,"申请日期：",thirdFormate);
        sheet.addCell(approveDate);

        Label code = new Label(8,2,"编号：",thirdFormate);
        sheet.addCell(code);


        //第四行
        sheet.mergeCells(0, 3, 2, 3);//添加合并单元格，第一个参数是起始列，第二个参数是起始行，第三个参数是终止列，第四个参数是终止行
        sheet.mergeCells(3, 3, 9, 3);//添加合并单元格，第一个参数是起始列，第二个参数是起始行，第三个参数是终止列，第四个参数是终止行
        sheet.mergeCells(10, 3, 11, 3);//添加合并单元格，第一个参数是起始列，第二个参数是起始行，第三个参数是终止列，第四个参数是终止行
        WritableFont fourBold = new WritableFont(WritableFont.createFont("宋体"),12,WritableFont.NO_BOLD,false);//设置字体种类和黑体显示,字体为Arial,字号大小为10,采用黑体显示
        WritableCellFormat fourFormate = new WritableCellFormat(fourBold);//生成一个单元格样式控制对象
        fourFormate.setAlignment(Alignment.CENTRE);//单元格中的内容水平方向居中
        fourFormate.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//单元格的内容垂直方向居中
        Label payee = new Label(0,3,"收款单位：",fourFormate);
        sheet.setRowView(3, 340, false);
        sheet.addCell(payee);

        Label attach = new Label(10,3,"附件 张：",fourFormate);
        sheet.addCell(attach);



        //第五行
//        sheet.mergeCells(1, 4, 2, 4);//添加合并单元格，第一个参数是起始列，第二个参数是起始行，第三个参数是终止列，第四个参数是终止行
//        sheet.mergeCells(3, 4, 6, 4);//添加合并单元格，第一个参数是起始列，第二个参数是起始行，第三个参数是终止列，第四个参数是终止行
//        sheet.mergeCells(10, 3, 11, 3);//添加合并单元格，第一个参数是起始列，第二个参数是起始行，第三个参数是终止列，第四个参数是终止行
//        WritableFont fiveBold = new WritableFont(WritableFont.createFont("宋体"),12,WritableFont.NO_BOLD,false);//设置字体种类和黑体显示,字体为Arial,字号大小为10,采用黑体显示
//        WritableCellFormat fiveFormate = new WritableCellFormat(fiveBold);//生成一个单元格样式控制对象
//        fiveFormate.setAlignment(Alignment.CENTRE);//单元格中的内容水平方向居中
//        fiveFormate.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//单元格的内容垂直方向居中
//        Label index = new Label(0,4,"序号：",fiveFormate);
//        sheet.setRowView(4, 600, false);
//        sheet.addCell(index);
//
//        Label attach = new Label(10,3,"附件 张：",fourFormate);
//        sheet.addCell(attach);







        //创建要显示的具体内容
//        WritableFont color = new WritableFont(WritableFont.ARIAL);//选择字体
//        color.setColour(Colour.GOLD);//设置字体颜色为金黄色
//        WritableCellFormat colorFormat = new WritableCellFormat(color);
//        Label formate = new Label(0,1,"数据格式",colorFormat);
//        sheet.addCell(formate);
//        Label floats = new Label(1,1,"浮点型");
//        sheet.addCell(floats);
//        Label integers = new Label(2,1,"整型");
//        sheet.addCell(integers);
//        Label booleans = new Label(3,1,"布尔型");
//        sheet.addCell(booleans);
//        Label dates = new Label(4,1,"日期格式");
//        sheet.addCell(dates);
//
//        Label example = new Label(0,2,"数据示例",colorFormat);
//        sheet.addCell(example);
//        //浮点数据
//        //设置下划线
//        WritableFont underline= new WritableFont(WritableFont.ARIAL,WritableFont.DEFAULT_POINT_SIZE,WritableFont.NO_BOLD,false,UnderlineStyle.SINGLE);
//        WritableCellFormat greyBackground = new WritableCellFormat(underline);
//        greyBackground.setBackground(Colour.GRAY_25);//设置背景颜色为灰色
//        Number number = new Number(1,2,3.1415926535,greyBackground);
//        sheet.addCell(number);
//        //整形数据
//        WritableFont boldNumber = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//黑体
//        WritableCellFormat boldNumberFormate = new WritableCellFormat(boldNumber);
//        Number ints = new Number(2,2,15042699,boldNumberFormate);
//        sheet.addCell(ints);
//        //布尔型数据
//        Boolean bools = new Boolean(3,2,true);
//        sheet.addCell(bools);
//        //日期型数据
//        //设置黑体和下划线
//        WritableFont boldDate = new WritableFont(WritableFont.ARIAL,WritableFont.DEFAULT_POINT_SIZE,WritableFont.BOLD,false,UnderlineStyle.SINGLE);
//        WritableCellFormat boldDateFormate = new WritableCellFormat(boldDate,DateFormats.FORMAT1);
//        Calendar c = Calendar.getInstance();
//        Date date = c.getTime();
//        DateTime dt = new DateTime(4,2,date,boldDateFormate);
//        sheet.addCell(dt);
        //把创建的内容写入到输出流中，并关闭输出流
        workbook.write();
        workbook.close();
        os.close();

    }

    public static void main(String[] args) {
        try

        {
            MutiStyleExcelWrite excelWrite = new MutiStyleExcelWrite();

            //输出EXCEL

            File filewrite=new File("D:/test1212_3.xls");

            filewrite.createNewFile();

            OutputStream os=new FileOutputStream(filewrite);

            excelWrite.createExcel(os);

        }

        catch(Exception e)

        {

            e.printStackTrace();

        }
    }
}